
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
  <meta charset="utf-8">
  <title>iOS7时代我们用什么来追踪和识别用户？ - XCode Dev  Gary</title>
  <meta name="author" content="蒲晓涛">

  
  <meta name="description" content="要识别用户，首先就是要选择一个标识符，通过这个标识符来识别这个用户的设备（而不是用户），这个标识符要能够保证一个设备上返回的值是一样的，并且在其他设备上不会出现相同的值。 在iOS7之前，曾经有过很多方法来识别用户的设备，从最原始的设备udid、mac地址， &hellip;">
  

  <!-- http://t.co/dKP3o1e -->
  <meta name="HandheldFriendly" content="True">
  <meta name="MobileOptimized" content="320">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  
  <link rel="canonical" href="http://p709723778.github.io/blog/2014/03/22/ios7shi-dai-wo-men-yong-shi-yao-lai-zhui-zong-he-shi-bie-yong-hu-%3F">
  <link href="/favicon.png" rel="icon">
  <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
  <link href="/atom.xml" rel="alternate" title="XCode Dev  Gary" type="application/atom+xml">
  <script src="/javascripts/modernizr-2.0.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
  <script src="/javascripts/octopress.js" type="text/javascript"></script>
  <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="//fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">

  

</head>

<body   >
  <header role="banner"><hgroup>
  <h1><a href="/">XCode Dev  Gary</a></h1>
  
    <h2>Work is just a part of life! －Gary</h2>
  
</hgroup>

</header>
  <nav role="navigation"><ul class="subscription" data-subscription="rss">
  <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
  
</ul>
  
<form action="https://www.google.com/search" method="get">
  <fieldset role="search">
    <input type="hidden" name="q" value="site:p709723778.github.io" />
    <input class="search" type="text" name="q" results="0" placeholder="Search"/>
  </fieldset>
</form>
  
<ul class="main-navigation">
  <li><a href="/">首页</a></li>
  <li><a href="/blog/archives">IOS资料</a></li>
  <li><a href="http://weibo.com/234050155" target="_blank">My微博</a></li>
  
  
</ul>

</nav>
  <div id="main">
    <div id="content">
      <div>
<article class="hentry" role="article">
  
  <header>
    
      <h1 class="entry-title">iOS7时代我们用什么来追踪和识别用户？</h1>
    
    
      <p class="meta">
        








  


<time datetime="2014-03-22T17:07:11+08:00" pubdate data-updated="true">Mar 22<span>nd</span>, 2014</time>
        
      </p>
    
  </header>


<div class="entry-content"><p>要识别用户，首先就是要选择一个标识符，通过这个标识符来识别这个用户的设备（而不是用户），这个标识符要能够保证一个设备上返回的值是一样的，并且在其他设备上不会出现相同的值。</p>

<p>在iOS7之前，曾经有过很多方法来识别用户的设备，从最原始的设备udid、mac地址，到被各广告统计平台广泛使用的开源方案OpenUDID。</p>

<p>但随着AppStore开始拒绝接受使用udid的应用，到mac地址在iOS7上所有设备上都返回相同的值，再到iOS7上对剪贴板的限制，导致OpenUDID无法被不同应用共享相同的值，注定了上面提到的这些id们不得不退出历史的舞台。</p>

<p>随着iOS7快速占据了半壁江山，设备id的控制权终于彻底回到了Apple手中，同时也让用户能够把控自己的隐私，充分表明了是苹果对用户隐私保护的决心。</p>

<p>好了，其实就一个问题：iOS7时代我们用什么来追踪和识别用户？</p>

<h3>先给结论</h3>

<p>idfa: 适用于对外：例如广告推广，换量等跨应用的用户追踪等
idfv: 适用于对内：例如分析用户在应用内的行为等
PS：尘埃落定，跟着Apple走，大家不用再犹豫了。</p>

<h3>再给解释</h3>

<h4>idfa</h4>

<p>全名：advertisingIdentifier
代码：</p>

<p><code>#import  
NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];</code></p>

<p>来源：iOS6.0及以后</p>

<p>说明：直译就是广告id， 在同一个设备上的所有App都会取到相同的值，是苹果专门给各广告提供商用来追踪用户而设的，用户可以在 设置|隐私|广告追踪 里重置此id的值，或限制此id的使用，故此id有可能会取不到值，但好在Apple默认是允许追踪的，而且一般用户都不知道有这么个设置，所以基本上用来监测推广效果，是戳戳有余了。
注意：由于idfa会出现取不到的情况，故绝不可以作为业务分析的主id，来识别用户。
idfv
全名：identifierForVendor
代码：</p>

<p>  NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];</p>

<p>来源：iOS6.0及以后</p>

<p>说明：顾名思义，是给Vendor标识用户用的，每个设备在所属同一个Vender的应用里，都有相同的值。其中的Vender是指应用提供商，但准确点说，是通过BundleID的DNS反转的前两部分进行匹配，如果相同就是同一个Vender，例如对于com.somecompany.appone,com.somecompany.apptwo 这两个BundleID来说，就属于同一个Vender，共享同一个idfv的值。和idfa不同的是，idfv的值是一定能取到的，所以非常适合于作为内部用户行为分析的主id，来标识用户，替代OpenUDID。
注意：如果用户将属于此Vender的所有App卸载，则idfv的值会被重置，即再重装此Vender的App，idfv的值和之前不同。</p>

<p>历史上的英雄们
UDID
设备唯一标识符（Unique Device Identifier）之前被各种国内外统计平台，应用开发商广泛使用，后Apple从2013年05月01日起拒绝接受使用UDID的应用后，立毙！</p>

<p>Mac地址
每一个网卡都有一个唯一的标识，即Mac地址，显然用来标识一个手机是绰绰有余的了，也有一些开源的方案也用到了它，国内UMTrack等也用它作为过主id，随着iOS7返回同样的值后，不得不退隐江湖。</p>

<p>OpenUDID
在Apple拒绝UDID后，OpenUDID作为独立于Apple的开源方案，被广大的开发者所接受，各大统计广告平台都从UDID等方案切换到OpenUDID的方案（看来大家都不想完全被Apple束缚啊），但不幸的事，同样由于iOS7对剪贴板的限制，导致同一个设备上应用间，无法再共享一个OpenUDID，即OpenUDID作为设备唯一标识的能力被大大削弱。也可以看到随着iOS7的来临，各广告平台都迅速更新自己的SDK，来切换到苹果的idfa的方案上来。</p>

<p>其他
CFUUID、NSUUID等自己生成，自己存储管理的就不细说啦。</p>

<p>DeviceToken
这是推送用的令牌，用户如果没开推送，或者拒绝了，这个就没有了！了！</p>
</div>


  <footer>
    <p class="meta">
      
  

<span class="byline author vcard">Posted by <span class="fn">蒲晓涛</span></span>

    


      








  


<time datetime="2014-03-22T17:07:11+08:00" pubdate data-updated="true">Mar 22<span>nd</span>, 2014</time>
	  
	
	
	
	<p class="meta">
      原创文章，版权声明：自由转载-非商用-非衍生-保持署名 Gary | <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh" id="">Creative Commons BY-NC-ND 3.0</a>

    </p>
	
      


    </p>
    
      <div class="sharing">

    
	
  
  
  
   
       <!-- JiaThis Button BEGIN -->
<div class="jiathis_style">
<span class="jiathis_txt">分享到：</span>
<a class="jiathis_button_qzone">QQ空间</a>
<a class="jiathis_button_tsina">新浪微博</a>
<a class="jiathis_button_tqq">腾讯微博</a>
<a class="jiathis_button_weixin">微信</a>
<a class="jiathis_button_renren">人人网</a>
<a class="jiathis_button_kaixin001">开心网</a>
<a class="jiathis_button_douban">豆瓣</a>

<a href="http://www.jiathis.com/share?uid=1916190" class="jiathis jiathis_txt jiathis_separator jtico jtico_jiathis" target="_blank">更多</a>
<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript" >
var jiathis_config={
	data_track_clickback:true,
	summary:"",
	shortUrl:false,
	hideMore:false
}
</script>
<script type="text/javascript" src="http://v3.jiathis.com/code/jia.js?uid=1916190" charset="utf-8"></script>
<!-- JiaThis Button END -->


<!-- UY BEGIN -->
<div id="uyan_frame"></div>
<script type="text/javascript" src="http://v2.uyan.cc/code/uyan.js?uid=1916190"></script>
<!-- UY END -->
   
</div>

    
    <p class="meta">
      
      
        <a class="basic-alignment right" href="/blog/2014/03/22/new-post/" title="Next Post: 博客迁移">博客迁移 &raquo;</a>
      
    </p>
  </footer>
</article>
 
</div>

<aside class="sidebar">
  
    <section>
  <h1>最新帖子</h1>
  <ul id="recent_posts">
    
      <li class="post">
        <a href="/blog/2014/04/14/ioskai-fa-zhi-arcxia-de-deallocbao-liu-yuan-yin/">IOS开发之 ---- ARC下的dealloc保留原因</a>
      </li>
    
      <li class="post">
        <a href="/blog/2014/04/14/macosxzhi-qqjie-tu-ou-er-bu-neng-shi-yong-wen-ti/">MacOSX之 ---- QQ截图偶尔不能使用问题</a>
      </li>
    
      <li class="post">
        <a href="/blog/2014/03/22/new-post/">博客迁移</a>
      </li>
    
      <li class="post">
        <a href="/blog/2014/03/22/ios7shi-dai-wo-men-yong-shi-yao-lai-zhui-zong-he-shi-bie-yong-hu-%3F/">iOS7时代我们用什么来追踪和识别用户？</a>
      </li>
    
  </ul>
</section>
<iframe width="100%" height="550" class="share_self"  frameborder="0" scrolling="no" src="http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=550&fansRow=2&ptype=1&speed=0&skin=1&isTitle=1&noborder=1&isWeibo=1&isFans=1&uid=1903254520&verifier=76bf5e3a&dpc=1"></iframe>



    
<section>    
<h1>Visitor</h1>    
<div>    
    <p></p>    
    <center>    
    <a href="http://info.flagcounter.com/Y4OM"><img src="http://s06.flagcounter.com/count/Y4OM/bg_FFFFFF/txt_000000/border_CCCCCC/columns_2/maxflags_12/viewers_0/labels_0/pageviews_0/flags_0/" alt="Flag Counter" border="0"></a>   
    </center>    
</div>    
</section>    
    
  
</aside>


    </div>
  </div>
  <footer role="contentinfo"><p>
  Copyright &copy; 2014 - 蒲晓涛 -
  <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>

</footer>
  











</body>
</html>
